unit authform_frm;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics,
  Dialogs, ExtCtrls, StdCtrls, ZDataset, datamodule_frm;

type

  { TAuthform }

  TAuthform = class(TForm)
    btaccedi: TButton;
    btchiudi: TButton;
    cbutenti: TComboBox;
    Label1: TLabel;
    edpassword: TLabeledEdit;
    Label2: TLabel;
    zq_auth: TZReadOnlyQuery;
    procedure btaccediClick(Sender: TObject);
    procedure btchiudiClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
    procedure FormShow(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end; 

var
  Authform: TAuthform;

implementation

{ TAuthform }

procedure TAuthform.btchiudiClick(Sender: TObject);
begin
//************************************
//***********DA TOGLIERE**************
//************************************
//per testare senza utente
DataModule1.idutente:=1;
//************************************
//************************************
//chiudo la form
close;
end;

procedure TAuthform.FormClose(Sender: TObject; var CloseAction: TCloseAction);
begin
  closeAction:=cafree;
end;

procedure TAuthform.FormShow(Sender: TObject);
begin
  //setto la variabile idutente a zero per bloccare il login
  DataModule1.idutente:=0;
  //popolo la lista degli utenti
  cbutenti.Clear;
  with zq_auth do
       begin
            Close;
            sql.Clear;
            sql.Add('SELECT USERNAME');
            sql.Add('FROM UTENTI');
            ExecSQL;
            open;
            //first;
            while not EOF do
             begin
                  //carico il campo username di ogni singolo record nella combo di visualizzazione
                  cbutenti.Items.Add(FieldByName('username').AsString);
                  Next;
             end;
            close;
            sql.Clear;
       end;

end;



procedure TAuthform.btaccediClick(Sender: TObject);
begin
  //controlli vari e caricamento parametri necessari
  if (Length(cbutenti.Text) > 0) and (Length(edpassword.Text) > 0)  then
     begin
          with zq_auth do
               begin
                    Close;
                    sql.Clear;
                    sql.Add('SELECT *');
                    sql.Add('FROM UTENTI');
                    sql.Add('WHERE USERNAME=:USER');
                    ParamByName('USER').AsString:=cbutenti.Text;
                    ExecSQL;
                    open;
                    //controllo se la password corrisponde
                    if FieldByName('pass').AsString=edpassword.Text then
                       begin
                            //salvo i parametri e altro
                            DataModule1.username:=FieldByName('username').AsString;
                            DataModule1.idutente:=FieldByName('idutente').asinteger;
                            //poi esco alla form principale
                            self.close;
                       end
                    else
                        begin
                             //pausa e messaggio di errore
                             Sleep(200);
                             ShowMessage('Password errata, riprova');
                             Self.ActiveControl:=edpassword;
                        end;
                    //chiudo e pulisco il dataset
                    close;
                    sql.Clear;
               end;
     end
  else
      begin
           //pausa e messaggio di errore
           ShowMessage('Inserisci Username e Password, quindi premi Accedi');
           Self.ActiveControl:=cbutenti;
      end;
end;

initialization
  {$I authform_frm.lrs}

end.

